import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';
import type { downloadParam } from '@/utils/download-util';
// eslint-disable-next-line import/no-unresolved
import { downloadSysFile } from '@/utils/download-util';
const basePath = '/appsys/role/RoleRest';
/** 系统角色表 */
export interface SysRoleDto extends BaseBeanModel {
  /** 角色名称 */
  roleName?: string;
  /** 角色代码 */
  roleCode?: string;
  /** 角色组，标示字段，用于区分不同的角色组，便于查询和分类 */
  roleGroup?: string;
  /** 角色类型，0代表系统内置角色，不能删除1代表由用户添加的角色 */
  roleType?: string;
  /** 所属应用系统ID */
  sysApplicationId?: string;
  /** 角色所属的部门，可选。用来表示该角色只在该部门内生效这是一个标示属性，进行权限判断时不会按照这个字段进行判断比如：生产管理部下的生产计划员 */
  roleDeptId?: string;
  /** 描述 */
  roleDesc?: string;
  /** 设置角色是否有效，1-有效，0-无效 */
  validFlag?: string;
  /** 排序 */
  orderBy?: number;
  /** 0 公有可用     1私有可用 */
  usageModifier?: string;
}

/**
 * 获取主表分页数据
 * @param param 表格参数
 * @returns 表格数据
 */
export function listSysRoleByPage(param: QueryParamModel): Promise<ResponsePageData<SysRoleDto>> {
  return request.post(`${basePath}/searchByPage/v1`, param);
}

/**
 * 保存表单数据
 * @param form 表单数据
 */
export function saveSysRole(form: [SysRoleDto]): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/saveSysRoles/v1`, form);
}

/**
 * 根据id集合删除数据
 * @param ids 选中行id集合
 */
export function delSysRole(ids: [string]): Promise<ResponseBaseData<any>> {
  return request.delete(`${basePath}/deleteByIds/v1`, { data: ids });
}

/**
 * 导出
 * @param param 导出数据
 */
export function exportExcel(param: any) {
  const download = {
    url: `${basePath}/exportServerData/v1`,
    data: param,
    method: 'post'
  } as downloadParam;
  return downloadSysFile(download);
}

/**
 * 获取子表分页数据
 * @param param 表格参数
 * @param id 主表选中id
 * @returns 表格数据
 */
export function listRoleUserByPage(param: QueryParamModel, id: string): Promise<ResponsePageData<SysRoleDto>> {
  return request.post(`${basePath}/searchSysUserByPage/${id}/v1`, param);
}

/**
 * 根据id集合删除数据
 * @param ids 选中行id集合
 */
export function delRoleUser(ids: [string]): Promise<ResponseBaseData<any>> {
  return request.delete(`${basePath}/deleteUserRoleByIds/v1`, { data: ids });
}

/**
 * 添加用户数据
 * @param param 添加数据
 * @param id 主表选中id
 */
export function saveRoleUser(param: any, id: string) {
  return request.post(`${basePath}/saveUserRole/${id}/v1`, param);
}
